package com.suray.rgv;

import com.suray.basic.wcs.path.core.Node;
import com.suray.type.RgvMapTagDirection;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 模块内部接口，用于suray-rgv-interface与下面各个小车模块交互，外部无法使用
 * 通过该接口添加和删除小车，处理地图的相关操作
 */
public interface IRgvManager {

    /**
     * 添加小车
     *
     *
     * @param rgvNo
     * @param serialNum
     * @param ip
     * @param port
     * @return
     */
    RgvInterface newRgv(int rgvNo, String serialNum, String ip, Integer port);

    /**
     * 删除小车
     * @param rgv
     * @return
     */
//    boolean deleteRgv(RgvInterface rgv);

    /**
     * 发送地图给小车
     * @param mapNodes
     * @param direction
     * @return
     */
    void generalMap(String paperFile,List<Node> mapNodes,RgvMapTagDirection direction) throws IOException;

    /**
     * 导入小车smap文件
     * 获取smap的地码信息，生成新的smap文件
     * @param inputStream
     * @param direction
     */
    void loadRgvSmap(Integer layer ,String loadRgvSmap,InputStream inputStream, List<Node> mapNode,
                     RgvMapTagDirection direction) throws IOException;

    /**
     * 自动加载Agv地图
     * @param
     * @param
     */
    public abstract  void loadMapLayer(String paperFile);

}
